package com.example.jksj.bookmanagement.Base;

import android.app.Application;
import android.content.Context;

import com.example.jksj.bookmanagement.utils.ActivityStackManager;
import com.hjq.toast.ToastUtils;

import org.xutils.DbManager;
import org.xutils.db.table.TableEntity;
import org.xutils.x;

import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper;

public class BaseApplication extends Application {
    private static Context context = null;
    private static DbManager db;

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

        // Activity 栈管理
        ActivityStackManager.init(this);

        // 初始化吐司工具类
        ToastUtils.init(this);

        BGASwipeBackHelper.init(this, null);


        initDB();
    }

    public static Context getContext(){
        return context;
    }

    //初始化数据库
    private void initDB(){
        x.Ext.init(this);
        //本地数据的初始化
        DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
                .setDbName("BookManagement.db") //设置数据库名
                .setDbVersion(1) //设置数据库版本,每次启动应用时将会检查该版本号,
                // 发现数据库版本低于这里设置的值将进行数据库升级并触发DbUpgradeListener
                .setAllowTransaction(true) //设置是否开启事务,默认为false关闭事务
                .setTableCreateListener(new DbManager.TableCreateListener() {
                    @Override
                    public void onTableCreated(DbManager dbManager, TableEntity<?> tableEntity) {
                    }
                })
                .setDbOpenListener(new DbManager.DbOpenListener() {
                    @Override
                    public void onDbOpened(DbManager db) {
                        // 开启WAL, 对写入加速提升巨大
                        db.getDatabase().enableWriteAheadLogging();
                    }
                })
                // 设置数据库创建时的Listener
                .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                    @Override
                    public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                        // TODO: ...
                        // db.addColumn(...);
                        // db.dropTable(...);
                        // ...
                        // or
                        // db.dropDb();
                    }
                }); //设置数据库升级时的Listener,这里可以执行相关数据库表的相关修改,比如alter语句增加字段等
        // .setDbDir(null);//设置数据库.db文件存放的目录,默认为包名下databases目录下
        db = x.getDb(daoConfig);
    }

    //获取一个数据库实例
    public static DbManager gettDB(){
        return db;
    }
}
